(function(){var vt,ft,n;try{var i=window.$MicrosoftMaps8,t=i.Internal,ai=i.Anchor,ot=Microsoft.Maps.Internal._BaseMapDataSource,o=t._BaseMapTemplateSelector,y=t.CanvasDrawingContext,c=i.CoordinateProjection,u=t._Debug,e=t._EntityHelper,vi=i.G,p=i.GlobalConfig,w=t._Gimme,f=t._Helper,kt=t.HitTestIndex,s=t._JSEvent,g=p.features.labels,nt=t._LatLonCrs,dt=t._LayerDataSource,yi=i.LocationRect,st=t._MapFrameData,ht=i.Location,b=i.Matrix2D,pi=t.MapHelper,gt=i.MapMath,wi=i.MapTypeId,ni=i.MercatorCubeCrs,ti=t._Observable,ii=t._ObservableObject,r=i.Point,h=i.Rectangle,ct=t.RegionIndex,ri=i.SimpleLinePrimitive,bi=i.SimplePointPrimitive,tt=i.Size,ui=i.Viewport,it=i.ZoomLevel,ki=t.Iterator,di=t._Network,nt=t._LatLonCrs,lt=t._NAARectangle,fi=i.VectorImageTemplate,ei=i.VectorMapLayer,rt=t._VectorMath,gi=t._WorkDispatcher,nr=t._LayerRendererManager,l=this&&this.__extends||function(){var n=function(t,i){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i])},n(t,i)};return function(t,i){function r(){this.constructor=t}if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");n(t,i);t.prototype=i===null?Object.create(i):(r.prototype=i.prototype,new r)}}(),a=function(){function t(n){this.data=n;this._padding=t._defaultPadding;this.id=n.labelId;this.lastUsedRegions=[];this.reset()}return t.prototype.reset=function(){this.placedRegions=[];this.placementPriority=Number.MAX_VALUE;this.shouldBeRendered=!0;this.regions=[];this.positionInitialized=!1},t.getIconBounds=function(n,t){var r=h.empty(),i,u;if(n)for(i=0,u=n.length;ir&&(r=f,u=t)}return u},u.prototype._initializeRegionsAtCentroid=function(t,u,f,e){function g(n){return typeof n.length=="undefined"}var w=i.SpatialMath,a=w&&w.Geometry,o,h,k,s,d;if(a){o=void 0;try{o=a.centroid(u)}catch(rt){}if(o){var b=u.crs,tt=new ri([new ht(o.latitude,b.toLongitude(e.bounds[3],e.bounds[2])),new ht(o.latitude,b.toLongitude(e.bounds[1],e.bounds[0]))],null,null,!1),y=a.intersection(u,tt);if(y&&g(y)){h=void 0;f.project(e.bounds[3],e.bounds[2]);k=f.lastProjectedY;u.crs!==nt.instance&&(f=new c(nt.instance,t));f.project(o.longitude,o.latitude);h=new r(f.lastProjectedX,f.lastProjectedY);s=y.geometry.bounds;f.project(s[3],s[2]);d=f.lastProjectedX;f.project(s[1],s[0]);var it=f.lastProjectedX,p=it-d,l=this._measureLabel();l.width/p>1.1&&(this.data.text=v.wrapTextToFit(this.data.text,l,{width:p,height:0},3),this.data.text.indexOf("\n")>0&&(l=this._measureLabel()));l.width/p<=1.2&&this.regions.push({label:this,text:this.data.text,anchor:h,horizontalAlignment:0,placement:n.middleCenter,orientation:0});this.regions.push({label:this,text:this.data.text,anchor:new r(h.x,k),anchorOffset:new r(0,8),horizontalAlignment:0,placement:n.bottomCenter,orientation:0})}}}},u.prototype._initializeRegionsWithBounds=function(t,i,u){var o,s,a;i.project(u.bounds[3],u.bounds[2]);o=i.lastProjectedX;s=i.lastProjectedY;i.project(u.bounds[1],u.bounds[0]);var c=i.lastProjectedX,l=i.lastProjectedY,e=c-o,h=s-l,f=this._measureLabel();f.width/e>=1.3&&(this.data.text=v.wrapTextToFit(this.data.text,f,{width:e,height:h},3),this.data.text.indexOf("\n")>0&&(f=this._measureLabel()));f.width/e>=1.3||f.height/h>=1.3||f.width*f.height/(e*h)>=1.3?this.shouldBeRendered=!1:(a=new r((o+c)/2,(s+l)/2),this.regions.push({label:this,text:this.data.text,anchor:a,horizontalAlignment:0,placement:n.middleCenter,orientation:0}))},u.prototype._getRegionsFromVenueRects=function(t,i){for(var f,l,a,e,it,ut,v=i.labelRects,y=this._measureLabel(),h=ni.instance,u=new c(h,t),p=[],o=0,w=v.length;o60)||!(e<270))){it=rt.degreesToRadians(-e);ut={label:this,text:this.data.text,anchor:new r((a+tt)/2,(l+nt)/2),orientation:it,placement:n.middleCenter,horizontalAlignment:0};p.push(ut);this._padding=.5;break}}return p},u.prototype._initializeLabelRegions=function(n,t){var u=this.data.primitives&&this.data.primitives[0],f=u&&u.entity,e,i;if((this.regions=f.labelRects?this._getRegionsFromVenueRects(n,f,u):this._getRegionsFromHints(n,t),!this.regions)&&(this.regions=[],!f.labelRects)){e=0;i=this.data.primitives;i.length>1&&(e=this._largestAreaPrimitiveItem(i));var r=i[e],o=new c(r.crs,n),s=r.geometry;this._initializeRegionsAtCentroid(n,r,o,s);this.regions.length||this._initializeRegionsWithBounds(r,o,s)}},u}(a),ut=function(){function t(){this.labelRenderingComplete=new s}return t.prototype.beginDraw=function(){},t.prototype.endDraw=function(){},t.prototype.clear=function(){},t.prototype.cancelRender=function(){},t.prototype.draw=function(){return!1},t.prototype.remove=function(){return!1},t.prototype.update=function(){return!1},t.prototype.transformContainer=function(){return!1},t.prototype.invalidateHitTestingData=function(){},t.prototype.performHitTesting=function(){return!1},t.prototype.dispose=function(){f._disposeEvents(this)},t._getTextAnchorOffset=function(i,u){var c=u.width,s=u.height,f=i.region,h=f.placement,l=h&n.horizontalMask||n.right,a=t._horizontalTextAnchorFactor[n[l]],v=c*(a[f.horizontalAlignment]||0),o=0,e;switch(h&n.verticalMask){default:case n.top:o=-s;break;case n.middle:o=-s/2;break;case n.bottom:}return e=new r(v,o),f.anchorOffset&&(e=e.add(f.anchorOffset)),e},t._horizontalTextAnchorFactor={left:[-.5,-1,0],center:[0,-.5,.5],right:[.5,0,1]},t}(),k=function(i){function o(n,t,r,u,f){var e=i.call(this)||this;return e._mapEvents=[],e._taintedTemplatesExists=!1,e._map=n,e._dpiScale=t,e._canvasId=r?r:"labelCanvasId",e._canvasZIndex=u,e._renderEntityTypes=f,e._addCanvas(),e._positionCanvas(!1),e._hitTestIndex=new kt,e._labelOptions=n.getMapOptions().labelOptions,e._orderedLabels={},e}return l(o,i),o.init=function(){if(typeof p!="undefined"){var t=p.dynamicProperties&&p.dynamicProperties.uiLanguage||"",n=t.split("-")[0].toLowerCase(),i=g.nonItalicLabelLanguages||"",r=i.toLowerCase().split(",");n&&r.indexOf(n)>=0&&(o._nonItalicMarket=!0)}},o.prototype.transformContainer=function(n){if(this._validate2DCanvas()){var t=this._lastAnchorPointOfLabelCanvas=n.transform(new r(0,0)),i="translate("+t.x+"px,"+t.y+"px)";this._canvas.set_style({"-webkit-transform":i,transform:i})}return!0},o.prototype.dispose=function(){this._map=null;this._canvas&&this._canvas.clear();this._canvas=null;this._drawingContext&&(this._drawingContext.dispose(),this._drawingContext=null);this._hitTestIndex=null;this._context=null;this._orderedLabels=null;this._mapEvents.forEach(function(n){n.dispose()});i.prototype.dispose.call(this)},o.prototype.beginDraw=function(n,t){if(this._currentLabelRenderingContext=n,!f._renderAllPoiAndLabelsGL()){var i=this._drawingContext;i?(this._positionCanvas(t),i.save()):u.log(null,"Canvas context hasn't been created")}},o.prototype.copyCanvas=function(n){var t=this._drawingContext,i;t&&this._validate2DCanvas()&&(this._lastAnchorPointOfLabelCanvas=this._lastAnchorPointOfLabelCanvas||new r(0,0),i=t.getSize(),n.drawImage(t.getRootElement()[0],this._lastAnchorPointOfLabelCanvas.x-this._widthPadding,this._lastAnchorPointOfLabelCanvas.y-this._heightPadding,i.width,i.height),this._lastAnchorPointOfLabelCanvas=null)},o.prototype.endDraw=function(n,t){var u=this,i,r;n&&(i=this._validate2DCanvas(),r=this._drawingContext,r||!i)&&(this._drawLabels(!1,t,n.frame),Microsoft.Maps.setAsync(function(){u.labelRenderingComplete&&u.labelRenderingComplete.invoke({labelRenderingContext:n,delayedRenderingTime:0})}),i&&r.restore())},o.prototype._drawLabels=function(n,t,i){var f=this._orderedLabels,r,l,e,s,h,a;if(f){var c=o._getSortedPriorityKeys(Object.keys(f)),w=this._drawingContext,b=this._dpiScale;for(u.clearTestHooksLog(u.LabelDrawOrderTag),r=0,l=c.length;r=0;v--){h=n[t[v]];u.logLabelDrawOrder(h.text);var y=h.region,s=y.label.data.primitives[0],c=h.iconTemplates;if(!i||(l=c&&c[0],a=!1,s&&(a=e.getClickable(s.entity)||s.isTapEnabled&&s.isTapEnabled()),a||(a=l&&l.getIsHitTestable()),a&&s&&s.layer))if(y.type===1){if(w=y.anchor,!c||!c.length)continue;if(i)this._renderHitTesting(c,s,h,y);else{for(u.logPoiLayerStyleStart(),p=0,b=c.length;p1)&&(i=100);var e=this._widthPadding=Math.min(i,Math.ceil(.75*t.width)),o=this._heightPadding=Math.min(i,Math.ceil(.75*t.height)),r=this._dpiScale,s=t.width+2*e,h=t.height+2*o;this._drawingContext.setSize(r*s,r*h);n||this._canvas.set_style({top:-o+"px",left:-e+"px","-webkit-transform":"translate(0px, 0px)",transform:"translate(0px, 0px)",display:"block"});this._context.translate(r*e,r*o)}else this._canvas&&this._canvas.set_style({display:"none"});return t},o.prototype._renderHitTestData=function(){var n,t,i;this._validate2DCanvas()?(t=this._drawingContext,n=t.getSize(),i=this._dpiScale,this._hitTestIndex.reset(n.width/i,n.height/i),t.save(),this._drawLabels(!0),t.restore()):(n=this._map.getActualSize(),this._hitTestIndex.reset(n.width,n.height),this._drawLabels(!0));this._hitTestIndexValid=!0},o.prototype._renderTextLabel=function(n,t,i,r,u){var f=n.region,e=this._drawingContext,p=!u&&e.getRawContext(),s=n.style,h=r,a,c,y=!1,v={labels:[]},l,w;c=f.textSpans&&f.textSpans.length>0?o.createFont(f.textSpans[0].f*h,s):o.createFont(n.fontSize*h,s);u||e.setFont(c);l=f.horizontalAlignment;switch(l){default:case 1:a="left";break;case 0:a="center";break;case 2:a="right"}return u||(p.textAlign=a),f.textSpans?this._drawTextWithHints(p,n,c,h,l,s,t,i,u,v):u?this._drawTextWithoutHints(e,n,f,c,h,l,s,t,i,u,v):(e.save(),w=this._drawTextWithoutHints(e,n,f,c,h,l,s,t,i,u,v),y=y||w,e.restore(y)),v},o.prototype._getTextLabelData=function(n,t,i,r){return this._renderTextLabel(n,t,i,r,!0)},o.prototype._drawTextLabel=function(n,t,i){this._renderTextLabel(n,t,i,this._dpiScale,!1)},o.prototype._drawTextWithHints=function(t,i,r,u,f,e,s,h,c,l){var it=i.region,y=it.textSpans,st=y[0].x,ht=y[0].y,rt=e.styleStatic,ct=e.styleDynamic,b,k,lt=!c&&t.font,ut=!1,g=y[0].f,ft=r,p,et,v,d,a,nt,ot,w,tt;for(rt.fontOutlined&&(b=ct.outlineColor,k=rt.outlineWidth*u),p=0,et=y.length;p-1&&(!f._renderAllPoiAndLabelsGL()||this._taintedTemplatesExists)},o.prototype._validate2DCanvas=function(){var n=this._require2DCanvas();return n&&!this._canvas&&(this._addCanvas(),this._positionCanvas(!1)),n},o.prototype._acceptRenderable=function(n){function u(){return r.type===1||!!n.style}var i,r=n.region;try{i=this._renderEntityTypes.indexOf(2)>-1?t._MicroPoiEntity&&r.label.data.primitives[0].entity instanceof t._MicroPoiEntity:u()}catch(f){i=u()}return i},o._strokeAndFillText=function(n,t,i,r,u,f,e,o,s,h){i=t.styleDynamic.fontCaps===1&&i.toLocaleUpperCase?i.toLocaleUpperCase():i;var c=n.lineWidth,l=n.strokeStyle;f||(e&&o&&(n.shadowColor=e,n.shadowBlur=o),s&&h&&(n.strokeStyle=s,n.lineWidth=h,n.strokeText(i,r,u)));n.fillStyle=t.styleDynamic.fontColor;t.styleStatic.strataStyle&&t.styleStatic.strataStyle.alpha&&t.styleStatic.strataStyle.alpha<1&&(n.globalAlpha=t.styleStatic.strataStyle.alpha);n.fillText(i,r,u);n.globalAlpha=1;n.lineWidth=c;n.strokeStyle=l;n.shadowBlur=0},o.createFont=function(n,t){var i=t.styleDynamic,s=i.fontStyle===1&&!o._nonItalicMarket?"italic":"",h=i.fontCaps===2?"small-caps":"",r="",u=i.font,f,e;if(i.fontWeight)switch(i.fontWeight){case 4:r="bold";break;case 1:r="lighter";break;case 3:u.toLowerCase()!=="segoebing"&&(r="600")}return f=n+"pt",e=fi.getDefaultFontFamily(u),[s,h,r,f,e].join(" ")},o._prepareTextRenderingResult=function(n,t,i,r,u,e,s,h,c,l){var v=i.region,p=v.anchor.x+v.anchorOffset.x+(u.x-e),rt=v.anchor.y+v.anchorOffset.y+(u.y-s),b=i.lineWidths||[],y=parseFloat(u.w),a=y,nt,k,tt,d,it;if(g.useSegoeFontStack||(b[r]||(nt=t.styleDynamic.fontCaps===1&&u.n.toLocaleUpperCase?u.n.toLocaleUpperCase():u.n,k=o.getTextSize(nt,"",t,u.f,0).width,k+=w.Browser.is_safari&&l>1?10:0,b[r]=Math.max(a,k)),a=b[r]),a!==y)switch(n){case 2:p-=a-y;break;case 0:p-=(a-y)/2}return tt=(w.Browser.is_edge||w.Browser.is_ie||w.Browser.is_safari)&&f._renderAllPoiAndLabelsGL()?o._size(i).height:parseFloat(u.h),d=parseFloat(u.a),it=isNaN(d)?0:d,{style:t,text:u.n,x:p,y:rt,anchorOffetX:0,anchorOffetY:0,w:a,h:tt,rotation:it,outlineColor:h,outlineSize:c,font:null,horizontalAlignment:n,resetFont:!1,textBaseline:"top"}},o._renderTextBackground=function(n,t,i,r,u){var h=i.backgroundColor,c=i.backgroundOutlineColor,l=i.backgroundOutlineWidth*t,f=Math.floor(r.minPoint.x),e=Math.floor(r.minPoint.y)+2,o=Math.ceil(r.maxPoint.x-f),s=Math.ceil(r.maxPoint.y-e);return f*=t,e*=t,o*=t,s*=t,u||(h&&(n.fillStyle=h,n.fillRect(f,e,o,s)),c&&l&&(n.strokeStyle=c,n.lineWidth=l,n.strokeRect(f,e,o,s))),{bound:r,scale:t,styleStatic:i}},o._getVerticalAdjustment=function(t){var i,r;switch(t){default:case n.bottom:i="top";r=0;break;case n.middle:i="middle";r=.5;break;case n.top:i="bottom";r=1}return{textBaseline:i,verticalAdjustmentRatio:r}},o._scratchContext=new y,o}(ut);k.init();vt=function(){function n(){this._index=new ct;this._occludedIndex=new ct}return n.prototype.reset=function(n,t){this._index.reset(n,t);this._occludedIndex.reset(n,t)},n.prototype.addLabels=function(t){for(var r,e,f,c,i,o,s,l,u=0,h=t.length;u0){t.isRejected=!0;continue}for(var p=this._index.getOverlappingRegions(t),w=p.length,a=!1;w--;){for(var b=p[w],k=b.label.placedRegions,d=k.length;d--;)if(nt=k[d],nt===b){a=!0;break}if(a)break}if(a){t.isRejected=!0;continue}if(s.placedRegions.push(t),o){for(r=e+1;r0&&r.tps&&r.tps.length>0&&(e=r.tps[0],t.project(e.x||0,e.y||0));else{if(u=f.geometry,!u)return;t.project(u.x,u.y)}o=this._getIconRegion(t.lastProjectedX,t.lastProjectedY);o&&this.regions.push(o)},i.prototype._getIconRegion=function(t,u){var o,h=this.data.iconTemplates,f=this.data.imageWidth,e=this.data.imageHeight,y,s,c,l,v;return(!f||!e)&&h&&h[0]&&(s=a.getIconBounds(h,this.data.iconText),c=s.getSize(),f=c.width,e=c.height,y=new r(s.maxPoint.x-f/2,s.maxPoint.y-e/2)),f&&e&&(o={type:1,label:this,text:this.data.iconText,anchor:new r(t,u),anchorOffset:y,size:new tt(f,e),placement:n.middleCenter},l=this.data.primitives[0].entity,v=l&&l.collisionBehavior||0,v!==0&&(o.isFixed=!0),v===2&&(o.occludesOthers=!0),this.data.offsetX||(this.data.offsetX=f/2+i._defaultIconLabelOffset),this.data.offsetY||(this.data.offsetY=e/2+i._defaultIconLabelOffset)),o},i._defaultIconLabelOffset=2,i}(a),si=function(){function n(){this._collisionMapScale=.01;this._bufferSizeAroundRenderables=5;this._collisionMap=[]}return n.prototype.collide=function(n,t){for(var i,e,u=[],f=Object.keys(n),r=0,o=f.length;rthis._scaledViewportWidth){r.isRejected=!0;continue}!!r.occludesOthers!==i||r.isRejected||(r.occludesOthers||!this._isOverlappingRegion(u,f,e,c,t)?this._updateCollisionMap(u,f,e,c,t):r.isRejected=!0)}},n.prototype._updateCollisionMap=function(n,t,i,r,u){this._isOverlappingRegionOrUpdateCollisionMap(n,t,i,r,u,!0)},n.prototype._isOverlappingRegion=function(n,t,i,r,u){return this._isOverlappingRegionOrUpdateCollisionMap(n,t,i,r,u,!1)},n.prototype._isOverlappingRegionOrUpdateCollisionMap=function(n,t,i,r,u,f){for(var h,c=n/32>>0,l=t/32>>0,p=n%32,k=t%32,a,v=-1<

>>p,y=-2147483648>>k,w=v&y,o=!1,e,b=this._collisionMap,s=c;s<=l;s++)for(h=i;h<=r;h++)if(a=u*h+s,e=b[a]||0,c===l?f?e|=w:o=(e&w)!=0:s===c?f?e|=v:o=(e&v)!=0:s===l?f?e|=y:o=(e&y)!=0:f?e=-1:o=!!e,f)b[a]=e;else if(o)return!0;return o},n.prototype._sort=function(n){n.sort(function(n,t){return t.drawPriority-n.drawPriority})},n}(),yt=function(n){function t(t,r,u,f){var e=this,o={};return e=n.call(this,o)||this,e._isShutDown=!0,e._spatialMathRequested=!!(i&&i.SpatialMath),o.defineProperty("isLabelsEnabled",function(n,t){e._onIsLabelsEnabledChanged(n,t);e.labelsEnabledChanged.invoke(t)}),o.defineProperty("isUserLabelsEnabled",function(n,t){e._onIsUserLabelsEnabledChanged(n,t)}),e.instrumentLabelingPass=new s,e.labelsEnabledChanged=new s,e.onLabelsProcessed=new s,e._onTemplateReady=new s,e._frameMangerEventHandlers=[],e._labelingDiagnostics={},e._disposables=[],e._mapEvents=[],e._coreConfig=t,e._hitTestController=r,e._workDispatcher=u,e._customMapStyleManager=f,e.hitTestPriority=1,e}return l(t,n),t.prototype.attach=function(n){var t=this;this._map=n;this._labelUserMapLayers=this.getIsLabelsSupported();this._mapEvents.push(this._map.changed.add(function(n){n.name==="mode"&&t._onMapModeChanged(n.newValue)}));this._mapEvents.push(this._map.mapTypeChangeStarted.add(function(n){t._onMapTypeChangeStarted(n)}))},t.prototype.getIsLabelsSupported=function(){return this._map.getMode()?this._isSupportedMapTypeForLabels(this._map.getMapType().id)&&this._isSupportedMapModeForLabels(this._map.getMode().mapModeType):!0},t.prototype.getBaseTemplateName=function(){return this._templateName},t.prototype.SetAnimationState=function(n){this._isInAnimation=n},t.prototype.dispose=function(){this._shutDown();n.prototype.dispose.call(this);this._hitTestController=null;clearTimeout(this._invalidatedTimerId);f._clearDisposables(this._mapEvents);f._clearDisposables(this._frameMangerEventHandlers);f._disposeEvents(this)},t.prototype._onFrameSet=function(n){var t,i;this._isInAnimation||(t=n.frame,this._currentLabelRenderingContext&&this._currentLabelRenderingContext.frame&&(i=this._labeler&&this._labeler.cancelProcessingForFrame(this._currentLabelRenderingContext.frame),this._vectorLabels&&this._vectorLabels.cancelRender(this._currentLabelRenderingContext),i&&this._previousFrameData&&this._previousFrameData.frame.frameNumber===this._currentLabelRenderingContext.frame.frameNumber&&(this._previousFrameData=null)),this._finalVectorLabelRenderCompleteHandler&&this._finalVectorLabelRenderCompleteHandler.dispose(),this._finalVectorLabelRenderCompleteHandler=null,this._currentLabelRenderingContext={frame:t,paintId:0},this._isFinalPaintInitiated=!1)},t.prototype.performHitTesting=function(n,t){this._vectorLabels&&!this._isShutDown&&this._vectorLabels.performHitTesting(n,t)},t.prototype._constructVectorLabel=function(){return new wt(this._map)},t.prototype._initLabelRenderer=function(){this._vectorLabels&&this._vectorLabels.dispose();this._vectorLabels=this._constructVectorLabel()},t.prototype._bootStrap=function(){var n=this;this._isShutDown&&(this._isShutDown=!1,this._hitTestController&&this._hitTestController.addComponent(this));this._isTemplateReady=!1;this._subscribeToFrameManagerEvents();this._map.getTemplateSelector().then(function(t){return n._templateSelector=t,n._templateName=(t.getName()||"").toUpperCase(),t.selectorReady()}).then(function(t){!n._isShutDown&&t&&n._templateSelector&&t.getName()===n._templateSelector.getName()&&(n._isTemplateReady=!0,n._onTemplateReady.invoke(),n._onTemplateSelectorReady())})},t.prototype._onTemplateSelectorReady=function(){this._isShutDown||(u.log(null,"Hooking up LabelController to FrameManager and CompositeMode events"),this._createLabeler(),this._initLabelRenderer())},t.prototype._shutDown=function(){this._isShutDown||(f._clearDisposables(this._disposables),f._clearDisposables(this._frameMangerEventHandlers),this._templateSelector=null,this._isInitialLoadingComplete=!1,this._labeler=null,this._vectorLabels&&(this._vectorLabels.dispose(),this._vectorLabels=null),this._hitTestController&&this._hitTestController.removeComponent(this),this._isShutDown=!0)},t.prototype.getViewport=function(){var n=this._map.getMode();return n.getCurrentCrsViewport()},t.prototype.copyCanvas=function(n){this._vectorLabels&&this._vectorLabels.copyCanvas(n)},t.prototype.renderLabels=function(n,t){var i=this;this._currentLabelRenderingContext&&this._currentLabelRenderingContext.frame&&((this._isFinalPaintInitiated||this._labelInvalidated)&&u.clearTestHooksLog(u.UserLogTag),this._currentLabelRenderingContext={frame:this._currentLabelRenderingContext.frame,paintId:this._currentLabelRenderingContext.paintId++},this._vectorLabels||this._initLabelRenderer(),this._isFinalPaintInitiated&&(this._labelingDiagnostics.renderingTime=Date.now(),this._finalVectorLabelRenderCompleteHandler=this._vectorLabels.renderingComplete.add(function(n){n.labelRenderingContext&&n.labelRenderingContext.frame&&i._currentLabelRenderingContext&&i._currentLabelRenderingContext.frame&&n.labelRenderingContext.frame.frameNumber===i._currentLabelRenderingContext.frame.frameNumber&&n.labelRenderingContext.paintId===i._currentLabelRenderingContext.paintId&&(i._labelingDiagnostics.totalLabelingTime+=n.delayedRenderingTime,i._labelingDiagnostics.delayedRenderingTime=n.delayedRenderingTime,i._finalVectorLabelRenderCompleteHandler&&i._finalVectorLabelRenderCompleteHandler.dispose(),i._finalVectorLabelRenderCompleteHandler=null,i._completeLabelRenderingPhase())})),this._vectorLabels.render(n,this._currentLabelRenderingContext,this._labelingDiagnostics,t,this._labelInvalidated),this._labelInvalidated=!1,this._isFinalPaintInitiated&&(this._labelingDiagnostics.renderingTime=Date.now()-this._labelingDiagnostics.renderingTime,this._labelingDiagnostics.totalLabelingTime=Date.now()-this._labelingDiagnostics.totalLabelingTime,this._isFinalPaintInitiated=!1))},t.prototype._subscribeToFrameManagerEvents=function(){var t=this,n=this._map.getFrameManager();this._frameMangerEventHandlers.length===0&&(this._isInitialLoadingComplete||(this._isInitialLoadingComplete=!0,n.frameSet.isPreviouslyInvoked&&this._onFrameSet(n.frameSet.lastInvokedArgs),n.dataLoaded.isPreviouslyInvoked&&this._showLabelsForFrameOnTemplateReady(n.dataLoaded.lastInvokedArgs.frame)),this._frameMangerEventHandlers.push(n.frameSet.add(function(n){t._onFrameSet(n)})),this._frameMangerEventHandlers.push(n.dataLoaded.add(function(n){t._showLabelsForFrameOnTemplateReady(n.frame)})))},t.prototype._showLabelsForFrameOnTemplateReady=function(n){var t=this;this._isInAnimation||(this._isTemplateReady?this._showLabelsForFrame(n):this._onTemplateReady.addOne(function(){t._showLabelsForFrame(n)}))},t.prototype._createLabeler=function(){var n=this;this._labeler||(this._disposables.push(this._labeler=new v(this,this._workDispatcher)),this._disposables.push(this._labeler.primitiveProcessingComplete.add(function(t){return n._primitiveProcessingComplete(t)})),this._disposables.push(this._labeler.labelsProcessed.add(function(t){return n._showLabels(t)})))},t.prototype._isSupportedMapTypeForLabels=function(){return!0},t.prototype._isSupportedMapModeForLabels=function(n){return n===0},t.prototype._showLabelsForFrame=function(n){var i=this,f,o,s;this._labelingDiagnostics={frameNumber:n.frameNumber};f=Date.now();this._labelingDiagnostics.totalLabelingTime=f;var l=this._map.getFrameManager(),r=this._getMapFrameData(),u=r&&r.getPrimitives(1,!0);if(u){var h=this._map.getMapOptions().liteMode||t._isNullDataRegionFrame(r),e={},c=r.getLayerFrameData();c.forEach(function(n){var t=n.layer,r=t&&t.getIconOnlyLimit(),i;r>0&&(i=n.getPrimitives(1,!0),i&&i.length>=r&&(e[t.getId()]=!0))});this._labelingDiagnostics.primitiveCount=u.length;this._labelingDiagnostics.timeToAddStyles=Date.now();o=this._fetchPrerequisites(u);this._previousFrameData=r;s=function(){if(i._previousFrameData===r&&i._labeler&&!i._isInAnimation){var t=i._map.getMode(),f=t.getCurrentCrsViewport();i.addStyle(u);i._labelingDiagnostics.timeToAddStyles=Date.now()-i._labelingDiagnostics.timeToAddStyles;i._labelingDiagnostics.labelDataProcessingTime=Date.now();i._labeler.processData(n,u,e,f,i._map.getMercatorZoomLevel(),h);i._labelingDiagnostics.labelDataProcessingTime=Date.now()-i._labelingDiagnostics.labelDataProcessingTime}};Promise.all(o).then(s)}},t.isIconStyle=function(n){return n===t._iconStyle},t.prototype.addStyle=function(n){var f,i,r,s;if(n)for(f=this._map.getMercatorZoomLevel(),i=it.toScale(null,f,!0),r=n.length-1;r>=0;r--){var t=n[r],u=t.layer,o=u&&u.getTemplateSelector()||this._templateSelector;t.style=o.getMarkupStyle?o.getMarkupStyle(t,i):this._templateSelector.getMarkupStyle(t,i);e.isLandmarkEntity(t.entity)&&t.style&&(s=t.style.styleStatic,s.wrapDisplayName=!0);t.geometryType===1?(!u||u.getRenderTarget()!==0||t.entity&&t.entity.collisionBehavior===2)&&this._setMarkupStyle(t,o,i):t.iconTemplates=this._templateSelector.getFetchedShields(f,t.bucket,e.getShieldIndices(t.entity))}},t.prototype._fetchPrerequisites=function(n){for(var h,a,y,u,p,w,b,k,d=this,g={},f={},nt={},c=[],r=Array(),l=0,ut=n.length;l0&&c.push({bucketId:t.bucket,indexes:h}),!this._spatialMathRequested&&t.geometryType===3&&t.bucket&&t.entity&&!t.entity.labelHint&&e.getDisplayName(t.entity)&&(this._spatialMathRequested=!0,r.push(new Promise(function(n,t){d._map?d._map.getContainer().instanceAsync("SpatialMath",function(){n()}):t()})))),tt&&(s.getRenderTarget()!==0||t.entity&&t.entity.collisionBehavior===2)){a=s.getId();g[a]||(g[a]=!0,r.push(tt.selectorReady()));var it=t.bucket,i=t.entity,v=i,rt=i&&i.oid;rt?nt[rt]=!0:it&&(f[it]=!0);(t.catId||i&&i.getSelectedCategoryForIcon)&&(y=t.catId||i.getSelectedCategoryForIcon()||o.extractCategoryId(i.getPrimaryCategoryPath(),!0),y&&(u=o.getBucketForCategory(y),u&&(f[u]=!0),p=v&&v.getSearchCategory&&v.getSearchCategory(),u=p&&o.getBucketForCategory(p),u&&(f[u]=!0)));t.stylesheetEntry&&(w=this._customMapStyleManager.getElementBucket(t.stylesheetEntry,t.geometryType),w&&(f[w.toString()]=!0))}}return b=Object.keys(f),b.length>0&&r.push(this._templateSelector.prefetchImages(b)),k=Object.keys(nt),k.length>0&&r.push(this._templateSelector.prefetchOrganizationImagesByOrgId(k)),c.length>0&&r.push(this._templateSelector.prefetchShields(c)),r},t.prototype.invalidateLabels=function(){var n=this,t=function(){n._labelInvalidated=!0;n.onLabelsProcessed.invoke(n._currentLabelRenderingContext.frame)};clearTimeout(this._invalidatedTimerId);this._invalidatedTimerId=Microsoft.Maps.setTimeout(t,0)},t.prototype._setMarkupStyle=function(n,i,r){var u=n.iconTemplates=i.getTemplates(n,r);u&&u.length&&!n.style&&(n.style=t._iconStyle)},t.prototype._showLabels=function(n){var t=it.toScale(null,this._map.getMercatorZoomLevel(),!0),i=it.toScale(null,n.zoom,!0);i===t&&(this._vectorLabels||this._initLabelRenderer(),this._vectorLabels.showLabels(n.labels,n.region),this._isFinalPaintInitiated=!0,this.invalidateLabels(),this._zoomLevelForLabelingPhase=this._map.getMercatorZoomLevel())},t.prototype._getMapFrameData=function(){var u=this._map.getFrameManager(),n=u.getFrameData(),i,r,s,h;if(this._labelBaseMapLayers||this._labelUserMapLayers){if(!this._labelBaseMapLayers||!this._labelUserMapLayers){var f=[],e=[],o=n.getLayerFrameData();for(i=0;i0))if(i[0].isNullDataRegionMarker){if(r=!0,u>0&&i.length!==u){r=!1;break}u=i.length}else r=!1;return r},t._iconStyle={styleDynamic:{densityDistance:0,densityImportance:0,densityLodDelta:0,globalOrder:20,priority:0,font:"x",fontSize:1,fontColor:"x",visible:!0},styleStatic:{}},t}(ii),v=function(){function n(n,t){var i=this;this._disposables=[];this.message=new s;this.primitiveProcessingComplete=new s;this._workDispatcher=t;this._controller=n;this._worker=new hi(this,n.getBaseTemplateName(),t);this._labelDataByLabelId={};this._changedHandlersByLabelId={};this._alwaysRaiseEvents=!1;this._disposables.push(this._worker.message.add(function(n){if(i._currentFrame&&n.frame.frameNumber===i._currentFrame.frameNumber){var t=i._getWorkDispatcherKeyForFrame(n.frame),r=function(){i._processWorkerMessage(n)};i._workDispatcher&&i._workDispatcher.dispatch(r,t,4)}}));this.labelsProcessed=new s}return n.prototype.processData=function(n,t,i,r,u,f){var o,e,s;if(t&&r){for(this._showLabelBackground=f,this._labelDataByLabelId={},this._disposeAllChangedHandlers(),this._currentFrame=n,o={type:0,frame:this._currentFrame,viewport:r,zoom:u,labels:[]},this._labelDrawOrder={},e=0,s=t.length;e=0?ft<=255-r.styleDynamic.densityLodDelta*r.styleDynamic.densityImportance:r.styleDynamic.densityLodDelta<=(255-r.styleDynamic.densityImportance)/50+1,r.styleDynamic.visible&&(y=r.styleDynamic.densityLodDelta*r.styleDynamic.densityDistance+.5)),!r.styleDynamic.visible)||t.geometryType===2&&t.geometry.x.length<2)return null}var p=e.getShieldIndices(u),w=p&&p.length&&e.getShieldNames(u),o=t.iconTemplates,b=w&&w.length&&o,ht=e.isLandmarkEntity(u),s=!!(b&&b.length),k=o&&!!o[0],f=e.getDisplayName(u),h=f&&e.getSecondaryDisplayName(u),ct=h&&e.independentHotRegions(u),v=e.getIconText(u),ot=!1;if(s){var d=t.entity.labelHint,g=d&&d.lbl&&d.lbl[0],nt=g&&g.tps&&g.tps[0];nt&&nt.n&&(ot=!0,f=nt.n)}if((c=k&&!s&&(i||!f||o[0].hasText&&!v||yt.isIconStyle(r)),r.styleStatic.showBackground=this._showLabelBackground,!s&&r.styleStatic.shieldLabelVisibility===1)||!f&&!s&&!c)return null;if(l=[],s&&(l=n._createShieldLabelData(t,u,r,y,p,w,b),!ot))return l;r.styleDynamic.fontCaps===1&&(f=f.toUpperCase(),h=h.toUpperCase());a=1;tt=0;switch(t.geometryType){case 1:a=c?0:1;tt=r.styleDynamic.priority;st=!c&&n._getPointLabelType(ht,k,t.bucket);break;case 3:a=3;break;case 2:a=2}c&&(v=v||f,f=null,h=null);var lt=r.styleDynamic.fontSize,at=r.styleDynamic.secondaryFontSize,it={labelId:null,entityId:u.id,bucket:t.bucket,primitives:[],crs:t.crs,lowImportanceCollisionPadding:y,labelImportance:e.getLabelImportance(u),fontSize:lt,secondaryFontSize:at,priority:r.styleDynamic.globalOrder,text:f,secondaryText:h,independentHotRegions:ct,iconText:v,type:a,pointType:st,priorityGroup:tt,offsetX:r.styleStatic.offsetX,offsetY:r.styleStatic.offsetY,imageWidth:r.styleStatic.imageWidth,imageHeight:r.styleStatic.imageHeight,style:r,iconTemplates:k?o:null};return it.labelId=et.getKey(t,it),l.push(it),l},n._createShieldLabelData=function(n,t,i,r,f,o,s){var v=[],l,h,y,c,p,a;for(u.assert(!!(f&&f.length),"No shield indices"),u.assert(!!(o&&o.length),"No shield names"),u.assert(!!(s&&s.length),"No shield templates"),l=0,h=0;h=i&&(r=t.split(/\s+/),r.length>1)){for(var e=t.length/2,u="",f="";r.length;){while(r.length&&u.length<=f.length)u=u+" "+r.shift();while(r.length&&f.length<=u.length)f=r.pop()+" "+f}Math.abs(u.length-f.length)r.width)if(c=f._clamp(Math.round(i.width/r.width),2,u),c===2)t=n.wrapText(t,0);else{var w=Math.ceil(t.length/c),a=t.split(/\s+/),s=[],e="",o=!1;for(h=0,v=a.length;h=0&&(s.push(e),e="",o=!1)):(s.push(e),e=l,o=!0)}e&&s.push(e);t=s.join("\n").trim()}return t},n.prototype._raiseLabelsProcessedEvent=function(n,t,i){var r={region:n,labels:t,zoom:i};this.labelsProcessed.invoke(r)},n.prototype._postMessage=function(n){this.message.invoke(n)},n._isValidStyle=function(n){return!!(n&&n.styleStatic&&n.styleDynamic.fontColor&&n.styleDynamic.fontSize&&n.styleDynamic.font)},n.collisionAlphaThreshold=.58,n._minWrapLength=20,n._dispatchKey="Labeler:",n}(),hi=function(){function n(n,t,i){var r=this;this._workDispatcher=i;this._templateName=t;this._collisionManager=new oi;this._messageQueue=[];this.message=new s;this._mainThreadMessageSubscription=n.message.add(function(n){return r._queueMessage(n)})}return n.prototype.dispose=function(){this._mainThreadMessageSubscription&&(this._mainThreadMessageSubscription.dispose(),this._mainThreadMessageSubscription=null)},n.prototype._queueMessage=function(n){var r=this,t=this._getWorkDispatcherKeyForFrame(n.frame),i;n.type===2?this._workDispatcher.cancelDispatchWithKey(t,4):(this._messageQueue.push(n),i=function(){r._processMessage()},this._workDispatcher.dispatch(i,t,4))},n.prototype._getWorkDispatcherKeyForFrame=function(t){return n._dispatchKey+t.frameNumber},n.prototype._processMessage=function(){var r=this,n,t,i;if(this._messageQueue.length!==0){n=this._messageQueue.shift();switch(n.type){case 0:this._processPrimitivesChangedMessage(n);break;default:throw new Error("Unknown MessageType: "+n.type);}this._messageQueue.length>0&&(t=this._getWorkDispatcherKeyForFrame(this._messageQueue[0].frame),i=function(){r._processMessage()},this._workDispatcher.dispatch(i,t,4))}},n.prototype._processPrimitivesChangedMessage=function(n){for(var i,r,o,u,t,f=Date.now(),s=[],e=0,h=n.labels.length;ef&&(o=t,t=f,f=o,o=u,u=e,e=o);s=Math.atan2(e-u,f-t);Math.abs(s-Math.PI/2)<=i._VERTICAL_LABEL_TOLERANCE&&(s+=Math.PI,h=t,t=f,f=h,h=u,u=e,e=h);this.regions.push({label:this,text:this.data.text,anchor:new r((t+f)/2,(u+e)/2),placement:n.middleCenter,horizontalAlignment:0,orientation:s})},i.getLongestSegments=function(n,t){for(var e,r,i,o,u=[],f=0,a=n.length;f=0;i--)if(r[i]&&r[i].performHitTesting(n,t))break},n.prototype.showLabels=function(n,t){u.log(null,"renderLabels called with {0} labels",n.length);this._renderArgs={labels:n,viewport:t}},n.prototype._showLabels=function(n,t,i){for(var l,o,w,a=t.transform(i),s=this._labels,v=Object.keys(s),h={},u,y=this._renderers.length,r,c=n.length-1;c>=0;c--){var f=n[c],e=f.region,p=a.transform(e.anchor);for(e.anchor.x=p.x,e.anchor.y=p.y,e.anchorTransform=a.multiply(e.anchorTransform),u=f.id,h[u]=f,r=0;r=n.pixelWidth||e.anchor.y<0||e.anchor.y>=n.pixelHeight){for(o=0;o